/**
 * 文章接口
 *
 * 该接口定义了一个文章对象的结构，包括文章的基本信息和元数据。
 * 文章对象用于表示发布在平台上的文章，包含了文章的标题、内容、发布日期等信息。
 *
 * @property {number} id - 文章的唯一标识符
 * @property {string} title - 文章的标题
 * @property {number} userId - 发布文章的用户ID
 * @property {string} [imgUrl] - 文章的封面图片URL（可选）
 * @property {string} [articleOverview] - 文章的概述或摘要（可选）
 * @property {string} articleContent - 文章的详细内容
 * @property {string} publishDate - 文章的发布日期
 * @property {number} categoryId - 文章所属的分类ID
 * @property {string} createTime - 文章的创建时间
 * @property {string} updateTime - 文章的更新时间
 * @property {number} status - 文章的状态，例如发布、草稿等
 * @property {string} [password] - 文章的访问密码（可选）
 * @property {string} categoryName - 文章所属的分类名称
 * @property {string} userName - 发布文章的用户名
 * @property {string[]} tagNames - 文章的标签列表
 */
interface Article{
    id: number,
    title: string,
    userId: number,
    imgUrl?: string,
    articleOverview?: string,
    articleContent: string,
    publishDate: string,
    categoryId: number,
    createTime: string,
    updateTime: string,
    status: number,
    password?: string,
    categoryName: string,
    categoryIcon: string,
    iconColor: string,
    userAvatar: string,
    userName: string,
    tagNames: string[],
    /**
     * 文章类型（1-普通文章，2-合集）
     */
    type: number,
    /**
     * 合集文章ID
     */
    collectionId?: number,
    /**
     * 合集名称
     */
    collectionName?: string,
    /**
     * 合集封面图片URL
     */
    collectionImgUrl?: string,
    /**
     * 合集简介描述
     */
    collectionOverview?: string,
    /**
     * 合集创建时间（格式：yyyy-MM-dd HH:mm:ss）
     */
    collectionCreateTime?: string,
    /**
     * 上一篇关联文章信息（排除循环引用字段）
     */
    preArticle?: Article,
    /**
     * 下一篇关联文章信息（排除循环引用字段）
     */
    nextArticle?: Article,
    /**
     * 文章排序权重值
     */
    orderNum?: number,
    /**
     * 文章累计浏览次数
     */
    viewCount: number,
    /**
     * 文章累计点赞数量
     */
    likeCount: number,
    /**
     * 是否置顶标识（0-否，1-是）
     */
    isTop?: number
}

interface ArticleSearch extends Article{
    current: number,
    size: number,
    tagIds?: string
}


interface Tag{
    id: number,
    tagName: string,
    icon?: string,
    color?: string,
    tagType: number,
    remark?: string,
    createTime: string,
    status: string
}

interface Category{
    id: number,
    categoryName: string,
    icon?: string,
    color?: string,
    categoryType: number,
    remark?: string,
    parentId?: number,
    createTime: string,
    status: number,
    sort?: number
}
